/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Message;

import SwConfMessage.Interfaz.IMensaje;
import Message.Cabecera;
import Message.Cuerpo;
import java.util.StringTokenizer;

/**
 *
 * @author Jhonny
 */
public class Mensaje implements IMensaje {

    /**
     * Atributos de la clase Mensaje
     */
    private Cabecera cabecera = new Cabecera();
    private Cuerpo cuerpo = new Cuerpo();

    /**
     * conTructor de la clase mensaje sin parametros
     */
    public Mensaje() {
        cabecera = null;
        cuerpo = null;

    }

    /**
     * constructor de la clase mensaje con parametros
     *
     * @param sender
     * @param destinatario
     * @param asunto
     * @param mesaje
     */
    public Mensaje(String sender, String destinatario, String asunto, String mesaje) {
        cabecera.setUsuariosender(sender);
        cabecera.setUsuariodestinatario(destinatario);
        cuerpo.setAsunto(asunto);
        cuerpo.setMesaje(mesaje);
    }

    @Override
    public void Sender(String Sender) {
        cabecera.setUsuariosender(Sender);
    }

    @Override
    public String Sender() {
        return (cabecera.getUsuariosender());
    }

    @Override
    public void NombreDestino(String Destinatario) {
        cabecera.setUsuariodestinatario(Destinatario);
    }

    @Override
    public String NombreDestino() {
        return (cabecera.getUsuariodestinatario());
    }

    @Override
    public void asuntoMensaje(String Asunto) {
        cuerpo.setAsunto(Asunto);
    }

    @Override
    public String asuntoMensaje() {
        return (cuerpo.getAsunto());
    }

    @Override
    public void mensaje(String Mensaje) {
        cuerpo.setMesaje(Mensaje);
    }

    @Override
    public String mensaje() {
        return (cuerpo.getMesaje());
    }

    /**
     *
     * retorna contenido del mensaje
     */
    @Override
    public String toString() {
        return cabecera.toString() + cuerpo.toString();
        //return "Mensaje{" + "sender=" + sender + ", destinatario=" + destinatario + ", asunto=" + asunto + ", mesaje=" + mesaje + '}';
    }

    private String DatoValido(StringTokenizer mensaje, int indice) {

        while (--indice > 0) {
            mensaje.nextToken();
        }
        return (mensaje.nextToken());


    }

    /**
     * Metodo para recuparar datos de mensaje desde texto plano
     *
     * @param value
     */
    @Override
    public void mensajeTo(String value) {
        StringTokenizer mensaje = new StringTokenizer(value, "{=,}");
        if (mensaje.countTokens() == 10) {
            this.Sender(DatoValido(mensaje, 3));
            this.NombreDestino(DatoValido(mensaje, 2));
            this.asuntoMensaje(DatoValido(mensaje, 3));
            this.mensaje(DatoValido(mensaje, 2));

        }


    }

    public static void main(String arg[]) {
        Mensaje ms = new Mensaje("Delcy", "Juana", "Tarea", "como staj");
        System.out.println(".................................");
        ms.mensajeTo(ms.toString());
        System.out.println(".................................");
    }

    @Override
    public void Guardar() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void recuperar() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
}
